local rateLimiterKey = KEYS[1]

local count = tonumber(ARGV[1])
local time = tonumber(ARGV[2])
local timeStamp = tonumber(ARGV[3])

local minTime = timeStamp - time * 1000
-- 写入窗口数据
redis.call('zadd',rateLimiterKey,timeStamp,timeStamp)
-- 移除滑动窗口之外的数据
redis.call('zremrangebyscore',rateLimiterKey,0,minTime)
-- 窗口内数据统计
local zcount = redis.call('zcard',rateLimiterKey)
-- 设置key的过期时间
redis.call('expire', rateLimiterKey, time)
-- 当前数量大于被限制的数量 返回true , 否则不限制（false）
return tonumber(zcount) > count

